Systems and methods for adaptive motor speed control

ABSTRACT

A system including memory to store a plurality of sets of values, where each set is used to control speed of a different type of motor. A pulse width modulation (PWM) module receives an input indicating a type of motor sensed in the system, selects a set corresponding to the type of the sensed motor, and generates, based on the selected set, a pulse width modulation signal to control speed of the sensed motor. A speed module receives a requested speed for the sensed motor and generates an output indicating a range of speed corresponding to the requested speed. The PWM module selects, based on the range of speed, a value from the selected set; shifts, based on the selected value, the pulse width modulation signal; and adjusts, based on the shifted pulse width modulation signal, the speed of the sensed motor by adjusting torque applied to the sensed motor.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.13/010,928 (now U.S. Pat. No. 8,791,664), filed Jan. 21, 2011 whichclaims the benefit of U.S. Provisional Application No. 61/299,238 filedon Jan. 28, 2010. The entire disclosures of the applications referencedabove are incorporated herein by reference.

FIELD

The present disclosure relates generally to electric motor control andmore particularly to adaptive torque angle adjustment for an electricmotor.

BACKGROUND

The background description provided herein is for the purpose ofgenerally presenting the context of the disclosure. Work of thepresently named inventors, to the extent the work is described in thisbackground section, as well as aspects of the description that may nototherwise qualify as prior art at the time of filing, are neitherexpressly nor impliedly admitted as prior art against the presentdisclosure.

Cooling fan assemblies provide airflow to dissipate heat generated byelectronic components. Cooling fan assemblies often include a motor thatdrives fan blades via a rotor. The speed of the rotor may be adjusted toadjust airflow and heat dissipation.

A control module controls the speed of the rotor using pulse-widthmodulated (PWM) signals. The PWM signals may be based on a comparison ofa reference signal and a sine wave signal generated from a motor sensorsignal.

The motor sensor signal may be based on signals from a Hall-effectsensor that detects changes in magnetic fields within the motor as therotor rotates. Alternatively, the sine wave signal can be generatedbased on detection of back electromotive force (BEMF) from the motor.BEMF may be detected using detected voltages of motor coils and/or acentre tap of one of the coils while the motor is spinning.

SUMMARY

A system includes a target speed module and a pulse-width modulation(PWM) control module. The target speed module is configured to provide afirst waveform based on a first speed setting for a motor. A start of afirst cycle of the first waveform corresponds to at least one of a firstcurrent or a first voltage. The PWM control module is configured toshift a phase of the first waveform by a torque angle adjustment valueto generate a second waveform. A start of a first cycle of the secondwaveform corresponds to at least one of a second voltage or a secondcurrent. The second voltage is greater than the first voltage, and thesecond current is greater than the first current. The PWM control moduleis configured to control the motor based on the second waveform.

In another feature, the system further includes memory storing aplurality of different torque angle adjustment values each correspondingto a different range of speeds for the motor.

In other features, the PWM control module is configured to select afirst of the plurality of different torque angle adjustment values, andshift the phase of the first waveform to generate the second waveformbased on the first of the plurality of different torque angle adjustmentvalues.

In another feature, the plurality of different torque angle adjustmentvalues increase non-linearly with respect to each other.

In another feature, the motor drives a fan.

In other features, the first speed setting is greater than a secondspeed setting, and the target speed module is configured to provide thefirst waveform based on the first speed setting following the targetspeed module providing a third waveform based on the second speedsetting. The second speed setting is based on an increase in ambienttemperature of a device that includes the motor.

In other features, the system further includes a speed determinationmodule configured to provide a current speed signal based on firstsignals from a Hall-effect sensor positioned relative to the motor or aback electromotive force (BEMF) detection module detecting a BEMF fromthe motor.

In other features, the system further includes a speed control moduleconfigured to provide second signals to the PWM control module based onthe second waveform and the current speed signal. The PWM control moduleis configured to control the motor based on the second signals.

In still other features, a method includes generating a first waveformbased on a first speed setting for a motor. A start of a first cycle ofthe first waveform corresponds to at least one of a first current or afirst voltage. The method further includes shifting a phase of the firstwaveform by a torque angle adjustment value to generate a secondwaveform. A start of a first cycle of the second waveform corresponds toat least one of a second voltage or a second current. The second voltageis greater than the first voltage, and the second current is greaterthan the first current. The method further includes controlling themotor based on the second waveform.

In another feature, the method further includes storing a plurality ofdifferent torque angle adjustment values each corresponding to adifferent range of speeds for the motor.

In other features, the method further includes selecting a first of theplurality of different torque angle adjustment values, and shifting thephase of the first waveform to generate the second waveform based on thefirst of the plurality of different torque angle adjustment values.

In another feature, the plurality of different torque angle adjustmentvalues increase non-linearly with respect to each other.

In another feature, the method further includes driving a fan with themotor.

In other features, the first speed setting is greater than a secondspeed setting. The method further includes generating the first waveformbased on the first speed setting in response to generating a thirdwaveform based on the second speed setting. The second speed setting isbased on an increase in ambient temperature of a device that includesthe motor.

In other features, the method further includes generating a currentspeed signal based on first signals from a Hall-effect sensor positionedrelative to the motor or a back electromotive force (BEMF) detectionmodule detecting a BEMF from the motor.

In other features, the method further includes generating second signalsbased on the second waveform and the current speed signal, andcontrolling the motor based on the second signals.

Further areas of applicability of the present disclosure will becomeapparent from the detailed description, the claims and the drawings. Thedetailed description and specific examples are intended for purposes ofillustration only and are not intended to limit the scope of thedisclosure.

BRIEF DESCRIPTION OF DRAWINGS

The present disclosure will become more fully understood from thedetailed description and the accompanying drawings, wherein:

FIG. 1 is a cooling fan system according to the present disclosure;

FIGS. 2A-2D are functional block diagrams of motor control modulesaccording to the present disclosure;

FIGS. 3A-3C are waveforms that illustrate analog signals processed by acooling fan system according to the present disclosure;

FIGS. 4A-4C are waveforms that illustrate response signals of a coolingfan system according to the present disclosure; and

FIG. 5 is a flowchart that illustrates a method for operating a motoraccording to the present disclosure.

DESCRIPTION

The following description is merely illustrative in nature and is in noway intended to limit the disclosure, its application, or uses. Forpurposes of clarity, the same reference numbers will be used in thedrawings to identify similar elements. As used herein, the phrase atleast one of A, B, and C should be construed to mean a logical (A or Bor C), using a non-exclusive logical OR. It should be understood thatsteps within a method may be executed in different order withoutaltering the principles of the present disclosure.

As used herein, the term module may refer to, be part of, or include anApplication Specific Integrated Circuit (ASIC); an electronic circuit; acombinational logic circuit; a field programmable gate array (FPGA); aprocessor (shared, dedicated, or group) that executes code; othersuitable components that provide the described functionality; or acombination of some or all of the above, such as in a system-on-chip.The term module may include memory (shared, dedicated, or group) thatstores code executed by the processor.

The term code, as used above, may include software, firmware, and/ormicrocode, and may refer to programs, routines, functions, classes,and/or objects. The term shared, as used above, means that some or allcode from multiple modules may be executed using a single (shared)processor. In addition, some or all code from multiple modules may bestored by a single (shared) memory. The term group, as used above, meansthat some or all code from a single module may be executed using a groupof processors. In addition, some or all code from a single module may bestored using a group of memories.

Referring now to FIG. 1, a cooling fan system 100 includes a motor 102and a motor control module 104. In one example, the motor 102 is atwo-phase brushless direct current (DC) motor. In an alternativeexample, the motor is a three phase motor. The motor 102 includes atleast four stator poles: pole A1 106 and pole A2 108 (collectively polepair A) and pole B1 110 and pole B2 112 (collectively pole pair B). Polepair A is wound with a stator coil 114 (hereinafter “coil A 114”); andpole pair B is wound with a stator coil 115 (hereinafter “coil B 115”).

The motor control module 104 applies a voltage and/or current to coil A114 to generate a magnetic field between pole A1 106 and pole A2 108.Applying the voltage and/or current to coil A 114 is referred to as“driving phase A.” The motor control module 104 also applies the voltageand/or current to coil B 115 to generate a magnetic field between poleB1 110 and pole B2 112. Applying the voltage and/or current to coil B115 is referred to as “driving phase B.” The motor control module 104may apply the voltages and/or currents via pulse-width modulation (PWM)driving signals.

The motor 102 includes a rotor 116, which may include at least onepermanent magnet. The motor control module 104 drives phase A and/orphase B to actuate the rotor 116 about an axle 118. In one example, theaxle 118 mechanically couples the rotor 116 to a device. For example,the axle 118 may mechanically couple the rotor 116 to a fan 120. Therotor 116 in FIG. 1 rotates between the stator poles 106, 108, 110, 112.In an alternative example, the motor 102 includes a rotor that surroundsthe stator poles 106, 108, 110, 112.

In one example, the motor control module 104 drives phases A and B basedon sine waves that are used to generate the PWM drive signals. The PWMsignals therefore cause motor torque based on an angle along a sine wave(i.e., a torque angle). Traditional sine-wave-based electric motors havethe same initial torque angle applied to the motor 102 at differentspeed settings of the motor. For example, as the speed of the motor 102increases, the same initial torque angle is applied regardless of theapplied speed. If the same initial torque angle is used, spikes in theoutput drive current and/or voltage may occur that translate intoaudible noise.

For example, different poles, such as pole pair A and pole pair B, mayhave different coil windings or different size magnets. Thus, the motor102 may have an inconsistent speed depending on which pole is receivingvoltage and/or current. Such inconsistencies in speed may result inaudible noise.

The present disclosure minimizes audible noise in motor operation byadjusting initial torque angles applied to the coils of the pole pairs Aand/or B by a torque angle adjustment. In other words, if coil A 114drives the motor slower than coil B 115, the present disclosureincreases an initial torque angle applied to coil A 114 by adjusting(e.g., increasing) the torque angle, which in turn increases the initialamount of current and/or voltage applied to coil A 114. However, thepresent disclosure may alternatively include increasing the amount ofthe initial torque angle adjustment applied to either or both coil A 114and coil B 115 regardless of which coil drives the motor 102 slower.

In one example, the motor 102 includes at least one Hall-effect sensor122 that indicates rotation of the rotor 116. In another example, themotor 102 is sensor-less, and the motor control module 104 may detectback electro-motive force (BEMF) from the motor 102.

The motor control module 104 uses the torque angle adjustment to adjustthe initial torque angle of the sine waves used to generate the PWMsignals. By adjusting the initial torque angle, the present disclosurealigns the current or voltage applied to the motor 102 based on the BEMFof the motor 102 or the Hall-effect signal voltage of the motor 102.This alignment increases motor efficiency and lowers acoustic noise ofthe motor 102. Changing the motor speed can be achieved by adjusting thetarget speed of the motor. By changing the torque angle, the motor speedwill change. However, the purpose of adjusting the torque angle is toalign voltages applied to the motor 102 with the BEMF or Hall-effectsensor voltages.

In one example, the motor control module 104 detects BEMF generatedwhile the rotor 116 is spinning. In another example, the Hall-effectsensor 122 generates a pulse when a magnetic pole of the rotor 116passes the Hall-effect sensor 122. The motor control module 104determines a rotational speed of the rotor 116 based on the pulses fromthe Hall-effect sensor 122. Alternatively, the motor control module 104determines a rotational speed of the rotor 116 by determining BEMF ofthe motor 102. This may be done by comparing a tri-stated phase for themotor 102 with a centre tap of the motor 102 and/or voltages detectedfrom the coils of the motor 102.

The motor control module 104 drives the motor 102 using PWM drivingsignals when the speed of the rotor 116 is less than full speed. The PWMsignals include a series of driving pulses. The motor control module 104controls a duty cycle of the driving pulses to control the speed of therotor 116. In one example, the PWM signals are generated to correspondto a target motor speed signal. The target motor speed signal mayindicate a speed requested by a user and/or an electronic controller andmay include a torque angle adjustment provided by the motor controlmodule 104. The PWM signals may also be generated by comparing a sinewave signal generated from the Hall-effect signals or BEMF signals(i.e., current motor speed) and a target motor speed signal and thenadding the torque angle adjustment.

Referring now to FIGS. 2A-2B, the motor control module 104 implements afeedback system that adjusts the speed of the rotor 116 to reach atarget motor speed in view of a current motor speed. The current motorspeed may be determined from Hall-effect sensor signals, as shown inFIG. 2A, or BEMF detection, as shown in FIG. 2B.

In FIG. 2A, the motor control module 104 adjusts the speed of the rotor116 based on a difference between a current motor speed of the rotor 116and the target motor speed. For example, when the current motor speed isless than the target motor speed, the motor control module 104 increasesthe speed of the rotor 116 to achieve the target motor speed. When thecurrent motor speed is greater than the target motor speed, the motorcontrol module 104 decreases the speed of the rotor 116 to achieve thetarget motor speed.

In this example, the motor control module 104 includes a target speedmodule 202, a PWM control module 210, a sensor signal module 212, aspeed determination module 214 and a speed control module 218.

The PWM control module 210 drives phase A and/or phase B to adjust thespeed of the rotor 116 using PWM signals. The PWM signals are based on amodified speed signal from the speed control module 218 and a torqueangle adjustment from, for example, a look-up table 221 in memory 223.

The sensor signal module 212 receives signals from the Hall-effectsensor 122 when the rotor 116 is rotating. The speed determinationmodule 214 determines the current motor speed of the rotor 116 based onthe Hall-effect sensor signals.

The target speed module 202, which may include a digital-to-analogconverter (DAC) and/or an analog-to-digital converter (ADC), generatestarget speed signals based on the target motor speed requested by a userand/or an electronic controller. The target speed signals may thereforecorrespond to a target DAC value, for example. The target speed signalscan range from 0% to 100% of the total speed of the motor 102. Theamount of power transferred to the motor 102 depends on the target speedsignals. For example, a 100% target speed signal corresponds to fullspeed of the motor 102, and a 50% target speed signal corresponds tohalf the maximum speed spinning of the motor 102.

The speed control module 218 generates a modified speed signal (e.g., amodified DAC value) by comparing the target speed signals and theHall-effect sensor signals. The look-up table 221 provides apredetermined torque angle adjustment to the PWM control module 210based on the target speed signal.

In FIG. 2B, the motor control module 104 adjusts the speed of the rotor116 based on a difference between a current motor speed of the rotor 116and the target motor speed. For example, when the current motor speed isless than the target motor speed, the motor control module 104 increasesthe speed of the rotor 116 to achieve the target motor speed. When thecurrent motor speed is greater than the target motor speed, the motorcontrol module 104 decreases the speed of the rotor 116 to achieve thetarget motor speed.

In this example, the motor control module 104 includes the target speedmodule 202, the PWM control module 210, a BEMF detection module 219, thespeed determination module 214, and the speed control module 218.

The PWM control module 210 drives phase A and/or phase B to adjust thespeed of the rotor 116 using PWM signals. The PWM signals are based on amodified speed signal from the speed control module 218 and a torqueangle adjustment from, for example, the look-up table 221 in memory 223.

The BEMF detection module 219 detects voltages induced in the coilsand/or in a center-tap of one or more of the coils when the rotor 116 isrotating and generates a BEMF signal based on the voltages. The speeddetermination module 214 determines the current speed of the rotor 116based on the voltages induced in the coils and/or center-tap.

The target speed module 202 generates target speed signals based oncontrol signals indicative of the target motor speed requested by a userand/or an electronic controller. The speed control module 218 generatesthe modified speed signal based on the target speed signals and the BEMFsignal. The look-up table 221 provides a predetermined torque angleadjustment to the PWM control module 210 based on the modified speedsignal.

Referring now to FIGS. 2C-2D, in other examples, the motor controlmodule 104 adjusts the speed of the rotor 116 without feedback and basedonly on the target motor speed. The target motor speed may include atorque angle adjustment provided by the motor control module 104. Themotor control module 104 applies the voltage and/or currentcorresponding to the target motor speed to drive the rotor 116 to thetarget motor speed.

In FIG. 2C, the motor control module 104 includes the target speedmodule 202, the PWM control module 210 and the sensor signal module 212.

The PWM control module 210 drives phase A and/or phase B to adjust thespeed of the rotor 116 using PWM signals. The PWM signals are based onoutputs of the target speed module 202 and a torque angle adjustmentfrom, for example, the look-up table 221 in memory 223. The PWM signalsmay also be based on Hall-effect sensor signals from the sensor signalmodule 212.

The sensor signal module 212 receives signals from the Hall-effectsensor 122 when the rotor 116 is rotating. The target speed module 202generates target speed signals based on the target motor speed requestedby a user and/or an electronic controller. The look-up table 221provides a predetermined torque angle adjustment to the PWM controlmodule 210 based on the target speed signals.

In FIG. 2D, the motor control module 104 includes the target speedmodule 202, the PWM control module 210 and the BEMF detection module219.

The PWM control module 210 drives phase A and/or phase B to adjust thespeed of the rotor 116 using PWM signals. The PWM signals are based onoutputs of the target speed module 202, a torque angle adjustment from,for example, the look-up table 221 in memory 223. The PWM signals mayalso be based on BEMF signals from the BEMF detection module 219.

The BEMF detection module 219 measures voltages induced in the coilsand/or in a center-tap of one or more of the coils when the rotor 116 isrotating and generates a BEMF signal based on the voltages.

The target speed module 202 generates target speed signals based on thetarget motor speed requested by a user and/or an electronic controller.The look-up table 221 provides a predetermined torque angle adjustmentto the PWM control module 210 based on the target speed signals.

Referring now to FIGS. 3A-3B, an example of an output of the targetspeed module 202 (i.e., target speed signal) is illustrated as awaveform 217 of voltage (V) versus time (T). Voltage increases fromV₁-V₃, and time increase from T₀-T₂. The higher the voltage applied tothe coils of the pole pairs A and B, the faster the speed of the motor102. In one example, the PWM control module 210 modifies the waveform217 of the target speed module 202 by shifting the waveform by thetorque angle adjustment.

An example of a modified waveform 220 is illustrated in FIG. 3B. Themodified waveform 220 includes the waveform 217 shifted by apredetermined amount. The predetermined amount corresponds to the torqueangle adjustment. In one example, the PWM control module 210 shifts thewaveform 217 by different torque angle adjustment values for differentpercentages of the total motor speed indicated by the waveform 217. Thetorque angle adjustment values may correspond to torque angleadjustments.

The speed control module 218 may determine the percentage of the totalmotor speed by comparing the motor speed indicated by the waveform 217with a predetermined maximum motor speed. The predetermined maximummotor speed may be stored in memory 223 and may be based on theparticular motor that is being used.

The PWM control module 210 may modify the waveform 217 by differenttorque angle adjustment values based on the percentage of the totalmotor speed of the target speed signal.

For example, for a target speed signal within a range of 0%-10% of thetotal motor speed, the PWM control module 210 uses a torque angleadjustment value of 0. For a target speed signal within a range of10%-20% of the total motor speed, the PWM control module 210 uses atorque angle adjustment value of 1. For a target speed signal within arange of 20%-30% of the total motor speed, the PWM control module 210uses a torque angle adjustment value of 2. For a target speed signalwithin a range of 30%-40% of the total motor speed, the PWM controlmodule 210 uses a torque angle adjustment value of 4.

For a target speed signal within a range of 40%-50% of the total motorspeed, the PWM control module 210 uses a torque angle adjustment valueof 5. For a target speed signal within a range of 50%-70% of the totalmotor speed, the PWM control module 210 uses a torque angle adjustmentvalue of 7. For a target speed signal within a range of 70%-100% of thetotal motor speed, the PWM control module 210 uses a torque angleadjustment value of 9.

In one example, the torque angle adjustment values for the motor 102increase in a linear manner for different percentages of total motorspeed. In another example, the torque values for the motor 102 increasein a non-linear manner for different percentages of total motor speed.

The different torque angle adjustment values correspond to a scale. Forexample, one increment of torque adjustment (e.g., from torque angleadjustment value 0 to torque angle adjustment value 1) corresponds to anumber of degrees, such as a one-degree torque angle adjustment, toshift the waveform 217. The waveform 217 is shifted in order to adjustthe initial torque applied to the motor 102.

To illustrate, FIG. 3B shows a modified waveform 220 having a torqueangle adjustment value of 1, and FIG. 3C shows a modified waveform 222having a torque angle adjustment value of 9. The torque angle adjustmentvalues represent increments for moving the waveform 217 to the left, forexample. Thus, an increased voltage and/or current is applied to themotor 102 at time T₀.

Typically, the waveform 217 would start its first cycle at T₀ with thesame low voltage and/or current regardless of the selected speed.However, in the present disclosure, the waveform 217 starts its firstcycle with higher voltages and/or currents, depending on the selectedspeed, than the waveform 217 would without the application of a torqueangle adjustment/value.

The torque angle adjustment values can be programmed automaticallywithout the control of any external controllers. In one example, presettorque angle adjustment values are fixed internally. In another example,preset torque angle adjustment values are programmed upon power-up or bya one-time programming during manufacture.

In one example, the PWM control module 210 automatically adjusts thewaveform 217 based on a particular type of motor 102. An indication ofthe particular type of motor 102 may be provided to the PWM controlmodule 210 from an external source, such as an attached processor ordatabase and may be selected by a user.

The present disclosure includes different torque angle adjustment valuesfor different ranges of the target speed signal. The torque angleadjustment values may be stored in a look-up table 221 stored in memory223. In one example, the memory 223 stores different sets of torquevalues for different motors. In other words, each of a plurality ofmotors may have its own set of torque angle adjustment values foradjusting torque.

Referring now to FIG. 4A, in one example of the disclosure, the speedcontrol module 218 rectifies the waveform 217 to generate a rectifiedwaveform for a two-phase motor. The rectified waveform drives the motor102. The sensor signal module 212 or the BEMF detection module 219generates a reconstructed waveform 225 based on the motor 102. Thereconstructed waveform 225 illustrates a system lacking the adaptivetorque adjustment of the present disclosure. As shown, different coilwindings and/or poles in the motor 102 may cause different length cycles231, 233 in the reconstructed waveform 225.

Referring now to FIG. 4B, a reconstructed waveform 227 for a two-phasemotor system having the adaptive torque adjustment of the presentdisclosure is illustrated. The reconstructed waveform 227 represents acommanded increase in speed based on, for example, the modified waveform220. As shown, the torque angle adjustment reduces effects of differentcoil windings and/or poles and has more consistent length cycles 235than those in the reconstructed waveform 225.

Referring now to FIG. 4C, a reconstructed waveform 241 for a three-phasemotor system having the adaptive torque adjustment of the presentdisclosure is illustrated. The reconstructed waveform 241 represents acommanded increase in speed based on, for example, the modified waveform220. As shown, the torque adjustment reduces effects of different coilwindings and/or poles and has more consistent length cycles 245.

Generally, the PWM control module 210 drives phases A and B separatelyto rotate the rotor 116 based on the modified waveform 220. The speeddetermination module 214 determines the current motor speed based onHall-effect sensor signals or BEMF signals. The amount of time betweenconsecutive detections of Hall-effect sensor signals or BEMF signals maybe referred to hereinafter as a “signal detection period.” For example,the speed determination module 214 determines the signal detectionperiod based on the detection of consecutive signals from theHall-effect sensor 122 or the BEMF detection module 219.

For examples that include feedback, the speed control module 218instructs the PWM control module 210 to drive phase A and/or phase Bbased on a difference between the current motor speed and the targetmotor speed. The target motor speed is indicated by the modifiedwaveform 220. The speed control module 218 instructs the PWM controlmodule 210 to increase the speed of the rotor 116 when the target motorspeed is less than the current motor speed. The speed control module 218instructs the PWM control module 210 to decrease the speed of the rotor116 when the target motor speed is less than the current motor speed.

The target speed module 202 generates the target speed signal based onthe speed requested by the user and/or electronic controller. Forexample, the user may use a switch to select from a range of speeds. Theelectronic controller may also request the target motor speed based onsensed ambient temperature. For example, when the rotor 116 drives a fanblade, the electronic controller may request an increase in the targetmotor speed when the ambient temperature increases. Accordingly, theincrease in the target motor speed may result in an increased airflowthat cools components connected to the motor system 100.

Referring now to FIG. 5, a flowchart 400 illustrates a method foroperating the motor 102 according to one example of the presentdisclosure. At 402 the motor control module 104 receives a signalindicating a requested target motor speed. At 404 the target speedmodule 202 converts the signal into a target speed signal, which mayinclude a digital or analog representation of the signal that may bereferred to as a DAC value.

At 406 if target speed signal from the target speed module indicates atarget motor speed that is different than the current motor speed,control moves to 408. At 408 if the target speed signal indicates amotor speed that is greater than the current motor speed, at 410 thespeed control module 218 generates a signal to increase power to themotor 102 based on the target speed signal. Otherwise, at 412 the speedcontrol module 218 generates a signal to decrease power to the motor 102based on the target speed signal.

At 414 the PWM control module 210 adjusts the initial torque angle ofthe target speed signal. The PWM control module 210 adjusts the initialtorque angle of the target speed signal by shifting a waveformrepresentation of the target speed signal to the left by a torque angleadjustment value, as discussed above.

The broad teachings of the disclosure can be implemented in a variety offorms. Therefore, while this disclosure includes particular examples,the true scope of the disclosure should not be so limited since othermodifications will become apparent upon a study of the drawings, thespecification, and the following claims.

What is claimed is:
 1. A system comprising: a memory configured to storea plurality of sets of values, wherein each set of values of theplurality of sets values includes values used to control speed of adifferent type of motor, wherein each value in a set of valuescorresponds to a different range of speed of a motor; a pulse widthmodulation module configured to receive an input in response to thesystem being powered on, wherein the input indicates a type of motorsensed in the system in response to the system being powered on; selecta set of values from the plurality of sets of values, wherein theselected set of values corresponds to the type of the sensed motor; andgenerate, based on the selected set of values, a pulse width modulationsignal to control speed of the sensed motor; a speed module configuredto receive a requested speed for the sensed motor, and generate anoutput in response to receiving the requested speed for the sensedmotor, wherein the output indicates a range of speed corresponding tothe requested speed; wherein the pulse width modulation module isfurther configured to select, based on the range of speed indicated bythe output of the speed module, a value from the selected set of valuescorresponding to the sensed motor; shift, based on the selected value,the pulse width modulation signal; and adjust, based on the shiftedpulse width modulation signal, the speed of the sensed motor byadjusting torque applied to the sensed motor.
 2. The system of claim 1,wherein the values in each set of values include a plurality of torqueangle adjustment values.
 3. The system of claim 1, wherein the shiftedpulse width modulation signal supplies, based on the selected value, (i)a higher voltage or current or (ii) a lower voltage or current to thesensed motor at a beginning of a first cycle of the shifted pulse widthmodulation signal relative to the pulse width modulation signal withoutthe shift.
 4. The system of claim 1, further comprising: a sensorconfigured to generate a signal based on a current speed of the sensedmotor; a determination module configured to determine the current speedof the sensed motor based on the signal; and a control module configuredto generate a control signal based on the output of the speed module andthe current speed of the sensed motor, wherein the pulse widthmodulation module is further configured to shift the pulse widthmodulation signal based on the control signal.
 5. The system of claim 4,wherein the pulse width modulation module is further configured toselect, based on the control signal, the value from the selected set ofvalues corresponding to the sensed motor.
 6. The system of claim 1,further comprising: a detection module configured to detect a backelectromotive force of the sensed motor; a determination moduleconfigured to determine a current speed of the sensed motor based on theback electromotive force of the sensed motor; and a control moduleconfigured to generate a control signal based on the output of the speedmodule and the current speed of the sensed motor, wherein the pulsewidth modulation module is further configured to shift the pulse widthmodulation signal based on the control signal.
 7. The system of claim 6,wherein the pulse width modulation module is further configured toselect, based on the control signal, the value from the selected set ofvalues corresponding to the sensed motor.
 8. The system of claim 1,further comprising: a sensor configured to generate a signal based on acurrent speed of the sensed motor, wherein the pulse width modulationmodule is further configured to shift the pulse width modulation signalbased on the signal generated by the sensor to align a voltage orcurrent supplied to the motor via the shifted pulse width modulationsignal with the signal generated by the sensor.
 9. The system of claim1, further comprising: a detection module configured to detect a backelectromotive force of the sensed motor, wherein the pulse widthmodulation module is further configured to shift the pulse widthmodulation signal based on the back electromotive force of the sensedmotor to align a voltage or current supplied to the motor via theshifted pulse width modulation signal with the back electromotive forceof the sensed motor.
 10. A method comprising: storing, in a memory, aplurality of sets of values, wherein each set of values of the pluralityof sets values includes values used to control speed of a different typeof motor, wherein each value in a set of values corresponds to adifferent range of speed of a motor; sensing a type of motor in a systemin response to the system being powered on; selecting a set of valuesfrom the plurality of sets of values, wherein the selected set of valuescorresponds to the type of the sensed motor; generating, based on theselected set of values, a pulse width modulation signal to control speedof the sensed motor; receiving a requested speed for the sensed motor;generating an output in response to receiving the requested speed forthe sensed motor, wherein the output indicates a range of speedcorresponding to the requested speed; selecting, based on the range ofspeed, a value from the selected set of values corresponding to thesensed motor; shifting, based on the selected value, the pulse widthmodulation signal; and adjusting, based on the shifted pulse widthmodulation signal, the speed of the sensed motor by adjusting torqueapplied to the sensed motor.
 11. The method of claim 10, wherein thevalues in each set of values include a plurality of torque angleadjustment values.
 12. The method of claim 10, further comprisingsupplying, via the shifted pulse width modulation signal, based on theselected value, (i) a higher voltage or current or (ii) a lower voltageor current to the sensed motor at a beginning of a first cycle of theshifted pulse width modulation signal relative to the pulse widthmodulation signal without the shift.
 13. The method of claim 10, furthercomprising: sensing a current speed of the sensed motor; generating asignal based on the current speed of the sensed motor; generating acontrol signal based on the output and the current speed of the sensedmotor; and shifting the pulse width modulation signal based on thecontrol signal.
 14. The method of claim 13, further comprisingselecting, based on the control signal, the value from the selected setof values corresponding to the sensed motor.
 15. The method of claim 10,further comprising: detecting a back electromotive force of the sensedmotor; determining a current speed of the sensed motor based on the backelectromotive force of the sensed motor; generating a control signalbased on the output and the current speed of the sensed motor; andshifting the pulse width modulation signal based on the control signal.16. The method of claim 15, further comprising selecting, based on thecontrol signal, the value from the selected set of values correspondingto the sensed motor.
 17. The method of claim 10, further comprising:sensing a current speed of the sensed motor; generating a signal basedon the current speed; and shifting the pulse width modulation signalbased on the signal to align a voltage or current supplied to the motorvia the shifted pulse width modulation signal with the signal.
 18. Themethod of claim 10, further comprising: detecting a back electromotiveforce of the sensed motor; and shifting the pulse width modulationsignal based on the back electromotive force of the sensed motor toalign a voltage or current supplied to the motor via the shifted pulsewidth modulation signal with the back electromotive force of the sensedmotor.